package com.smm.web.mtower.util;

import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.ByteByReference;
import org.apache.log4j.Logger;

/**
 * Created by zhenghao on 2016/6/14.
 *
 * 实现视频播放回调接口 FRowDataCallBack
 */
public class RealDataCallBack implements HCNetSDK.FRealDataCallBack_V30 {

    private static final Logger logger= Logger.getLogger(RealDataCallBack.class);


    /**
     * 视频播放回调方法
     * @param lRealHandle       当前预览句柄
     * @param dwDataType        数据类型
     *                          NET_DVR_SYSHEAD         1 系统头数据
                                NET_DVR_STREAMDATA      2 流数据（包括复合流或音视频分开的视频流数据）
                                NET_DVR_AUDIOSTREAMDATA 3 音频数据
                                NET_DVR_PRIVATE_DATA    112 私有数据,包括智能信息
     * @param pBuffer           存放数据的缓冲区指针
     * @param dwBufSize         缓存区大小
     * @param pUser             用户数据
     */
    @Override
    public void invoke(NativeLong lRealHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize, Pointer pUser) {

        logger.info(dwDataType);

//        HWND hwnd = new HWND(Native.getComponentPointer(panelRealplay));
        switch (dwDataType)
        {
            case HCNetSDK.NET_DVR_SYSHEAD: //系统头

//                if (!playControl.PlayM4_GetPort(m_lPort)) //获取播放库未使用的通道号
//                {
//                    break;
//                }
//
//                if (dwBufSize > 0)
//                {
//                    if (!playControl.PlayM4_SetStreamOpenMode(m_lPort.getValue(), PlayCtrl.STREAME_REALTIME))  //设置实时流播放模式
//                    {
//                        break;
//                    }
//
//                    if (!playControl.PlayM4_OpenStream(m_lPort.getValue(), pBuffer, dwBufSize, 1024 * 1024)) //打开流接口
//                    {
//                        break;
//                    }
//
//                    if (!playControl.PlayM4_Play(m_lPort.getValue(), hwnd)) //播放开始
//                    {
//                        break;
//                    }
//                }
            case HCNetSDK.NET_DVR_STREAMDATA:   //码流数据

                logger.info("--- 获取视频码流");

//                if ((dwBufSize > 0) && (m_lPort.getValue().intValue() != -1))
//                {
//                    if (!playControl.PlayM4_InputData(m_lPort.getValue(), pBuffer, dwBufSize))  //输入流数据
//                    {
//                        break;
//                    }
//                }
                break;
        }

    }



}
